#ifndef IMAGELOADER_H
#define IMAGELOADER_H

#include <QImage>
#include <QString>
#include <QVariant>
#include <QVariantMap>
#include "ImageCacheItem.h"
#include "FileHandler.h"

/**
 * @brief 图像加载类，负责从文件系统加载图像和相关参数
 */
class ImageLoader : public FileHandler {
public:
    /**
     * @brief 构造函数，初始化错误信息
     */
    ImageLoader();
    
    /**
     * @brief 简化的加载接口：直接传入路径并返回完整的ImageCacheItem
     * @param originalImagePath 原始图像文件路径
     * @return 完整的ImageCacheItem对象，如果加载失败则返回空图像的对象
     */
    ImageCacheItem loadImageCacheItem(const QString &originalImagePath);
private:
    // 辅助方法：查找相关文件
    /**
     * @brief 查找处理后图像文件
     * @param originalFilePath 原始图像文件路径
     * @return 处理后图像文件路径，如果不存在则返回空字符串
     */
    QString findProcessedImageFile(const QString &originalFilePath);
    
    /**
     * @brief 查找处理参数文件
     * @param originalFilePath 原始图像文件路径
     * @return 参数文件路径，如果不存在则返回空字符串
     */
    QString findProcessingParamsFile(const QString &originalFilePath);
    
    // 内部使用的具体实现方法
    /**
     * @brief 从文件加载图像
     * @param filePath 图像文件路径
     * @return 加载的QImage对象，如果加载失败则返回空图像
     */
    QImage loadImage(const QString &filePath);
    
    /**
     * @brief 从JSON文件加载参数
     * @param filePath JSON参数文件路径
     * @return 加载的参数列表，按处理顺序排列
     */
    QList<QVariantMap> loadJsonParams(const QString &filePath);
};

#endif // IMAGELOADER_H
